<?php

namespace App\Http\Requests;

use Illuminate\Validation\Rule;
use App\Models\ProductSku;

class OrderRequest extends Request
{
    public function rules()
    {
        switch ($this->method()){
            // CREATE
            case 'POST':
                return [
                    // 判断用户提交的地址 ID 是否存在于数据库并且属于当前用户
                    'sku_id' => [ // 检查 items 数组下每一个子数组的 sku_id 参数
                        'required',
                        function ($attribute, $value, $fail) {
                            if (!$sku = ProductSku::find($value)) {
                                return $fail('该商品不存在');
                            }
                            if (!$sku->product->on_sale) {
                                return $fail('该商品未上架');
                            }
                            if ($sku->stock === 0) {
                                return $fail('该商品已售完');
                            }
                            // 根据索引找到用户所提交的购买数量
                            $amount = $this->input('amount');
                            if ($amount > 0 && $amount > $sku->stock) {
                                return $fail('该商品库存不足');
                            }
                        },
                    ],
                    'amount' => ['required', 'integer', 'min:1'],
                ];
                // UPDATE
            case 'PUT':
            {
                //dd($this->method(), $this->input('trade_account'));
                return [
                    'trade_account'       => 'required|min:6|max:11',
                ];
            }
            case 'GET':
            default:
            {
                return [];
            }
        }
    }


    public function messages()
    {
        return [
            'trade_account.required'    =>  '交易账户必填',
            'trade_account.min'         =>  '交易账户最少6位',
            'trade_account.max'         =>  '交易账户最长15位',
            'sku_id.required'           =>  '请选商品规格',
        ];
    }
}
